import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    // 状态（共享数据）
    // 访问(vue)：this.$store.state.num
    // 访问(js)：import store from '@/store'   store.state.num
    num: 0
  },
  getters: {},
  mutations: {
    // 修改state的唯一途径
    // 访问vue（调用mutations方法）:this.$store.commit('SETNUM',实参)
    // 访问js（调用mutations方法）:import store from '@/store'  store.commit('SETNUM',实参)
    SETNUM (state, value) {
      state.num = value
    }
  },
  actions: {
    // 作用：用于vuex内的异步处理，它要修改state还得通过mutations
    // 访问vue： this.$store.dispatch('refreshNum',实参)
    // 访问js：import store from '@/store'   store.dispatch('refreshNum',实参)
    // actions的返回值是什么？它的返回值是promise
    refreshNum (ctx, value) {
      // ctx:{commit}
      setTimeout(() => {
        ctx.commit('SETNUM', value)
      }, 2000)
    }
  },
  modules: {}
})
